/**
 * electron/config/config.default.js
 * 框架默认配置文件
 * 定义了应用的基本设置、窗口选项、日志配置、服务器配置等
 */

'use strict';

// 导入path模块，用于处理文件路径
const path = require('path');
// 导入获取基础目录的函数
const { getBaseDir } = require('ee-core/ps');

/**
 * 默认配置
 * 返回应用的默认配置对象
 */
module.exports = () => {
  return {
    // 是否打开开发者工具
    openDevTools: false,
    // 是否启用单一实例锁，防止应用多开
    singleLock: false,
    
    // 主窗口配置选项
    windowsOption: {
      title: '拓信IM',  // 窗口标题
      width: 1200,             // 窗口宽度
      height: 1100,            // 窗口高度
      minWidth: 400,          // 最小宽度
      minHeight: 300,         // 最小高度
      // 网页功能和安全设置
      webPreferences: {
        webSecurity: false,  // 关闭web安全限制以解决图片显示问题
        contextIsolation: false, // false -> 可在渲染进程中使用electron的api，true->需要bridge.js(contextBridge)
        nodeIntegration: true,  // 是否集成Node.js
        //preload: path.join(getElectronDir(), 'preload', 'bridge.js'), // 预加载脚本
        sandbox: false, // 允许node集成的情况下不使用沙箱
        // 安全策略配置
        additionalArguments: [
          `--js-flags=--expose-gc`,
          `--disable-features=OutOfBlinkCors`,
          `--disable-site-isolation-trials`,
          `--disable-features=BlockInsecurePrivateNetworkRequests`,
        ],
      },
      frame: true,            // 是否显示窗口边框
      show: true,             // 窗口创建后是否显示
      icon: path.join(getBaseDir(), 'public', 'images', 'logo-32.png'), // 窗口图标
    },
    
    // 日志配置
    logger: {
      level: 'INFO',          // 日志级别
      outputJSON: false,      // 是否输出JSON格式
      appLogName: 'ee.log',   // 应用日志文件名
      coreLogName: 'ee-core.log', // 核心日志文件名
      errorLogName: 'ee-error.log' // 错误日志文件名
    },
    
    // 远程页面配置
    remote: {
      enable: false,          // 是否启用远程页面功能
      url: 'http://electron-egg.kaka996.com/' // 远程页面URL
    },
    
    // Socket服务器配置
    socketServer: {
      enable: false,          // 是否启用Socket服务
      port: 7070,             // 端口号
      path: "/socket.io/",    // 路径
      connectTimeout: 45000,  // 连接超时时间(ms)
      pingTimeout: 30000,     // ping超时时间(ms)
      pingInterval: 25000,    // ping间隔(ms)
      maxHttpBufferSize: 1e8, // 最大HTTP缓冲区大小
      transports: ["polling", "websocket"], // 传输方式
      cors: {
        origin: true,         // 跨域设置
      },
      channel: 'socket-channel' // 通道名称
    },
    
    // HTTP服务器配置
    httpServer: {
      enable: true,           // 是否启用HTTP服务
      https: {
        enable: false,        // 是否启用HTTPS
        key: '/public/ssl/localhost+1.key',  // SSL私钥
        cert: '/public/ssl/localhost+1.pem'  // SSL证书
      },
      host: '127.0.0.1',      // 主机地址
      port: 7071,             // 端口号
    },
    
    // 主服务配置
    mainServer: {
      indexPath: '/public/dist/index.html', // 恢复主页文件路径为dist目录下的index.html
      channelSeparator: '/',                // 通道分隔符
    }
  }
}
